﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Systemet.SideViews
{
    public partial class SideProduktkort : UserControl
    {
        private Views.Produktkort mainProdKort;
        private Domain.ProdukController prdControll;
        private IEnumerable<Produktregister> produkter;
      
        public SideProduktkort()
        {
            InitializeComponent();
            AccessController.Instance.SidMeny = this;
        }

        private void SideProduktkort_Load(object sender, EventArgs e)
        {
            FlowController.Instance.ShowSpecifikMenu(FlowController.Instance.MainTabView[0]);
            mainProdKort = (Views.Produktkort)AccessController.Instance.ReturnMainView();
            updateComboboxes();
        }
        // Körs vid uppstart + bör köras om ny produkt läggs till
        public void updateComboboxes()
        {
            prdControll = new Domain.ProdukController();
            produkter = prdControll.ComboboxUpdate();
            FilterComboboxes();

        }
        private void FilterComboboxes()
        {
            string prodomrade;
            string prodGrupp;
            string prodKat;      

            if (cmbProdOmrade.Text == "Alla")
            {
                prodomrade = "";

            }
            else
            {
                prodomrade = cmbProdOmrade.Text;
            }
            if (cmbProdKat.Text == "Alla")
            {
                prodKat = "";

            }
            else
            {
                prodKat = cmbProdKat.Text;
            }
            if (cmbProdGrupp.Text == "Alla")
            {
                prodGrupp = "";

            }
            else
            {
                prodGrupp = cmbProdGrupp.Text;
            }

            foreach (Produktregister p in produkter)
            {
                if (p.avdelningsnamn.Contains(prodomrade) && (p.Produktkategori.produktKategoriNamn.Contains(prodKat)) && (p.Produktgrupp.produktGruppNamn.Contains(prodGrupp)) && p.produkt.Contains(cmbProdNamn.Text))
                {
                    if (!cmbProdKat.Items.Contains(p.Produktkategori.produktKategoriNamn))
                    {
                        cmbProdKat.Items.Add(p.Produktkategori.produktKategoriNamn);
                    }
                    if (!cmbProdGrupp.Items.Contains(p.Produktgrupp.produktGruppNamn))
                    {
                        cmbProdGrupp.Items.Add(p.Produktgrupp.produktGruppNamn);
                    }
                    if (p.Produktgrupp.produktGruppNamn == cmbProdGrupp.Text || cmbProdGrupp.Text == "")
                    {
                        if (!cmbProdNamn.Items.Contains(p.produkt))
                        {
                            cmbProdNamn.Items.Add(p.produkt);
                        }
                        if (!cmbprodID.Items.Contains(p.produktID))
                        {
                             cmbprodID.Items.Add(p.produktID);
                        }
                    }
                }
            }
        }
        //Val av kategori
        private void OnSearchIndexChange(object sender, EventArgs e)
        {
            cmbprodID.Items.Clear();
            cmbProdNamn.Items.Clear();
            cmbprodID.Text = "";
            cmbProdNamn.Text = "";
            if (sender != cmbProdGrupp)
            {
                clearCmbs();
            }
            FilterComboboxes();
            onSearchChange(sender, e);
        }
        //Aktuella filtreringar för datagridviewn
        public void onSearchChange(object sender, EventArgs e)
        {
            string prodomrade;
            string prodKat;
            cmbprodID.Text = "";
            cmbProdNamn.Text = "";
            if (cmbProdOmrade.Text == "Alla")
            {
                prodomrade = "";

            }
            else
            {
                prodomrade = cmbProdOmrade.Text;
            }
            if (cmbProdKat.Text == "Alla")
            {
                prodKat = "";
              
            }
            else
            {
                prodKat = cmbProdKat.Text;           
            }

            //prdControll = new Domain.ProdukController();
            //prdControll.updateProduktDGV(prodomrade, prodKat, cmbProdGrupp.Text, cmbProdNamn.Text, cmbprodID.Text);
            mainProdKort = (Views.Produktkort)AccessController.Instance.MainView;
            mainProdKort.UpdateDGV(prodomrade, prodKat, cmbProdGrupp.Text, cmbProdNamn.Text, cmbprodID.Text);
        }


        private void clearCmbs()
        {
            cmbprodID.Items.Clear();
            cmbProdNamn.Items.Clear();
            cmbProdGrupp.Items.Clear();
            cmbProdGrupp.Text = "";
            cmbprodID.Text = "";
            cmbProdNamn.Text = "";
        }

        private void ProductIdChange(object sender, EventArgs e)
        {
            if (sender == cmbprodID && cmbprodID.Focused)
            {
                foreach (Produktregister p in produkter)
                {
                    if (p.produktID == cmbprodID.Text)
                    {
                        cmbProdNamn.Text = p.produkt;
                        break;
                    }
                }
                //prdControll = new Domain.ProdukController();
                //prdControll.updateProduktDGV("", "", "", cmbProdNamn.Text, cmbprodID.Text);
                mainProdKort = (Views.Produktkort)AccessController.Instance.MainView;
                mainProdKort.UpdateDGV("", "", "", cmbProdNamn.Text, cmbprodID.Text);
            }
        }

        private void ProductNameChange(object sender, EventArgs e)
        {
            if (sender == cmbProdNamn && cmbProdNamn.Focused)
            {
                foreach (Produktregister p in produkter)
                {
                    if (p.produkt == cmbProdNamn.Text)
                    {
                        cmbprodID.Text = p.produktID;
                        break;
                    }
                }

                //prdControll = new Domain.ProdukController();
                //prdControll.updateProduktDGV("", "", "", cmbProdNamn.Text, cmbprodID.Text);
                mainProdKort = (Views.Produktkort)AccessController.Instance.MainView;
                mainProdKort.UpdateDGV("", "", "", cmbProdNamn.Text, cmbprodID.Text);
            }
        }
    }
}
